package org.agile2soft.nexoma.util.reveng;


import org.hibernate.cfg.reveng.DelegatingReverseEngineeringStrategy;
import org.hibernate.cfg.reveng.ReverseEngineeringStrategy;
import org.hibernate.cfg.reveng.TableIdentifier;

public class MultispacesReverseEngineeringStrategy extends DelegatingReverseEngineeringStrategy {

    public MultispacesReverseEngineeringStrategy(ReverseEngineeringStrategy delegate) {
        super(delegate);
    }

    /**
     * Controla el nombre de las propiedades de la entidad. Busca si el nombre
     * de columna contiene '_', y elimina el prefijo s�lo si coincide con
     * el propio nombre de la tabla.
     *
     * Ejemplo:
     *         TABLA USUARIO - Entidad Usuario
     *         Col USU_NOMBRE - Propiedad "nombre"
     *         Col PRO_CODIGO - Propiedad "proCodigo"
     */
    @Override
    public String columnToPropertyName(TableIdentifier table, String column) {
        String columnName = null;
        int iPrefix = column.indexOf("_");
        if ( iPrefix>-1  ) {
            String prefix = column.substring(0,iPrefix);
            if ( table.getName().toUpperCase().startsWith(prefix.toUpperCase()) ) {
                columnName = column.substring(iPrefix);
            }
        }
        if ( columnName==null ) {
            columnName = column;
        }
        return super.columnToPropertyName(table, columnName);
    }


}
